JS 2020

Web Development - জাভাস্ক্রিপ্ট (JavaScript) জাভাস্ক্রিপ্ট আপডেট ভার্সন (JS Update Version) |
301
301

ECMAScript 2020 (ES11) হলো জাভাস্ক্রিপ্টের একটি গুরুত্বপূর্ণ আপডেট যা ২০২০ সালে প্রকাশিত হয়। ES11 পূর্ববর্তী সংস্করণগুলোর উপর ভিত্তি করে তৈরি এবং এতে বিভিন্ন নতুন ফিচার ও উন্নত বৈশিষ্ট্য যুক্ত করা হয়েছে, যা ডেভেলপারদের জন্য কোড লেখাকে আরও সহজ, কার্যকর এবং শক্তিশালী করে তোলে। এই আপডেটে বড় সংখ্যা হ্যান্ডেল করা, নতুন অপারেটর, মডিউল সিস্টেমে উন্নতি, এবং বিভিন্ন স্ট্রিং ম্যানিপুলেশন ফিচার যুক্ত করা হয়েছে।


ES11 এর প্রধান বৈশিষ্ট্যসমূহ

BigInt

BigInt হলো একটি নতুন প্রিমিটিভ ডেটা টাইপ যা বড় সংখ্যাগুলো হ্যান্ডেল করতে পারে, যা Number টাইপের সীমা ছাড়িয়ে যায়। এটি ১৮০৭ এর উপরে বড় সংখ্যা ধারণ করতে সক্ষম।

উদাহরণ:

const largeNumber = 123456789012345678901234567890n;
console.log(largeNumber);  // আউটপুট: 123456789012345678901234567890n

// BigInt এর সাথে Number এর তুলনা
const anotherNumber = 9007199254740991;  // Number.MAX_SAFE_INTEGER
console.log(largeNumber > anotherNumber);  // আউটপুট: true

ব্যাখ্যা: n সাফিক্স ব্যবহার করে BigInt তৈরি করা হয় এবং এটি বড় সংখ্যাগুলোকে সঠিকভাবে হ্যান্ডেল করতে সক্ষম হয়।


Dynamic Import

Dynamic Import এর মাধ্যমে কোড স্প্লিটিং সহজ করা যায় এবং প্রয়োজন অনুসারে মডিউলগুলো লোড করা সম্ভব হয়। এটি অ্যাসিঙ্ক্রোনাস ফাংশন import() ব্যবহার করে করা হয়।

উদাহরণ:

async function loadModule() {
    const module = await import('./math.js');
    console.log(module.add(2, 3));  // আউটপুট: 5
}

loadModule();

ব্যাখ্যা: import() ফাংশনটি ডায়নামিকভাবে মডিউল লোড করে এবং প্রমিস রিটার্ন করে, যা await এর মাধ্যমে হ্যান্ডেল করা যায়।


Nullish Coalescing Operator (??)

Nullish Coalescing Operator (??) হলো একটি নতুন অপারেটর যা null বা undefined এর ক্ষেত্রে ডিফল্ট মান প্রদান করতে ব্যবহৃত হয়।

উদাহরণ:

const foo = null ?? 'default string';
console.log(foo);  // আউটপুট: 'default string'

const bar = 0 ?? 42;
console.log(bar);  // আউটপুট: 0

ব্যাখ্যা: ?? অপারেটরটি শুধুমাত্র null বা undefined এর ক্ষেত্রে ডিফল্ট মান ব্যবহার করে, অন্যান্য ফালসি মান যেমন 0, '', বা false এর ক্ষেত্রে ডিফল্ট মান ব্যবহার করা হয় না।


Optional Chaining (?.)

Optional Chaining (?.) অপারেটরটি ডিপলি নেস্টেড অবজেক্টের প্রপার্টি অ্যাক্সেস করতে ব্যবহৃত হয়, যেখানে কোনো পর্যায়ে null বা undefined থাকলে তা থামিয়ে দিয়ে undefined রিটার্ন করে।

উদাহরণ:

const user = {
    name: 'Alice',
    address: {
        city: 'Dhaka',
    }
};

console.log(user.address?.city);       // আউটপুট: 'Dhaka'
console.log(user.contact?.phone);      // আউটপুট: undefined

ব্যাখ্যা: ?. অপারেটরটি চেক করে যে পূর্বের প্রপার্টি null বা undefined কিনা, এবং যদি না হয় তবে পরের প্রপার্টি অ্যাক্সেস করে।


Promise.allSettled()

Promise.allSettled() মেথডটি একটি অ্যারে অফ প্রমিসেস নেয় এবং প্রতিটি প্রমিসের ফলাফল (ফুলফিল্ড বা রিজেক্টেড) রিটার্ন করে একটি নতুন প্রমিসে রেজল্ভ হয়।

উদাহরণ:

const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'foo'));
const promise3 = 42;

Promise.allSettled([promise1, promise2, promise3]).then((results) => results.forEach((result) => console.log(result)));
/*
আউটপুট:
{ status: 'fulfilled', value: 3 }
{ status: 'rejected', reason: 'foo' }
{ status: 'fulfilled', value: 42 }
*/

ব্যাখ্যা: Promise.allSettled() সব প্রমিসের স্টেটাস জানার জন্য ব্যবহৃত হয়, যা প্রমিসেসের সফলতা বা ব্যর্থতা নির্বিশেষে তাদের ফলাফল প্রদান করে।


String.prototype.matchAll()

matchAll() মেথডটি একটি স্ট্রিংয়ের মধ্যে নির্দিষ্ট রেগুলার এক্সপ্রেশন অনুযায়ী সমস্ত ম্যাচ খুঁজে এবং একটি ইটারেটর রিটার্ন করে।

উদাহরণ:

const regex = /\d+/g;
const str = 'There are 15 cats and 30 dogs.';

const matches = str.matchAll(regex);
for (const match of matches) {
    console.log(match[0]);
}
/*
আউটপুট:
15
30
*/

ব্যাখ্যা: matchAll() ইটারেটর ব্যবহার করে সব ম্যাচ একসাথে রিটার্ন করে, যা for-of লুপে ব্যবহার করা যায়।


globalThis

globalThis হলো একটি স্ট্যান্ডার্ড গ্লোবাল অবজেক্ট অ্যাক্সেস করার পদ্ধতি, যা ব্রাউজার, Node.js এবং অন্যান্য পরিবেশে একইভাবে কাজ করে।

উদাহরণ:

console.log(globalThis);  // ব্রাউজারে window, Node.js এ global

ব্যাখ্যা: globalThis ব্যবহার করে ডেভেলপাররা গ্লোবাল অবজেক্ট অ্যাক্সেস করতে পারেন, যা বিভিন্ন পরিবেশে আলাদা নাম ধারণ করে থাকে।


Module Namespace Exports

Module Namespace Exports এর মাধ্যমে একাধিক এক্সপোর্টকে একসাথে namespace হিসেবে ইমপোর্ট করা যায়।

উদাহরণ:

// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;

// main.js
import * as math from './math.js';

console.log(math.add(5, 3));       // আউটপুট: 8
console.log(math.subtract(5, 3));  // আউটপুট: 2

ব্যাখ্যা: import * as math ব্যবহার করে math.js এর সব এক্সপোর্টগুলো math নামের namespace হিসেবে ইমপোর্ট করা হয়েছে।


import.meta

import.meta হলো একটি অবজেক্ট যা মডিউল সম্পর্কে তথ্য প্রদান করে, যেমন মডিউলের URL।

উদাহরণ:

// main.js
console.log(import.meta.url);  // আউটপুট: মডিউলের URL

ব্যাখ্যা: import.meta ব্যবহার করে ডেভেলপাররা মডিউলের সংক্রান্ত তথ্য অ্যাক্সেস করতে পারেন, যা ডায়নামিক মডিউল লোডিং এবং অন্যান্য প্রয়োজনে ব্যবহৃত হয়।


ES11 এর সুবিধাসমূহ

  • বড় সংখ্যার হ্যান্ডেলিং: BigInt এর মাধ্যমে বড় সংখ্যাগুলো সঠিকভাবে হ্যান্ডেল করা যায়, যা আর্থিক হিসাব বা অন্যান্য উচ্চ পরিসরের গণনার ক্ষেত্রে প্রয়োজনীয়।
  • অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং উন্নতি: async/await, for-await-of এবং Promise.allSettled() এর মাধ্যমে অ্যাসিঙ্ক্রোনাস কোড লেখা আরও সহজ ও রিডেবল হয়।
  • অবজেক্ট ও অ্যারে ম্যানিপুলেশন সহজ করা: Object.fromEntries(), Array.prototype.flat(), এবং Array.prototype.flatMap() মেথডগুলো ডেটা হ্যান্ডলিংকে আরও কার্যকরী করে তোলে।
  • স্ট্রিং ম্যানিপুলেশন উন্নতি: trimStart(), trimEnd(), এবং String.prototype.matchAll() মেথডগুলো স্ট্রিং প্রসেসিংকে আরও সহজ করে।
  • মডিউল সিস্টেমে উন্নতি: ডায়নামিক ইমপোর্ট এবং মডিউল namespace exports ডেভেলপারদের জন্য মডিউল ব্যবহারে আরও নমনীয়তা প্রদান করে।
  • গ্লোবাল অবজেক্ট অ্যাক্সেস: globalThis ব্যবহার করে গ্লোবাল অবজেক্ট অ্যাক্সেস করা সহজ এবং পরিবেশ নির্বিশেষে একসাথে কাজ করে।
  • রেগুলার এক্সপ্রেশন শক্তিশালী করা: লুকবিহাইন্ড অ্যাসারশনস, নেমড ক্যাপচার গ্রুপস, ডটঅল ফ্ল্যাগ, এবং ইউনিকোড প্রপার্টি এস্কেপস রেগুলার এক্সপ্রেশনকে আরও শক্তিশালী এবং নমনীয় করে তোলে।
  • কোডের রক্ষণাবেক্ষণ সহজ করা: ট্রেইলিং কমা ব্যবহার করে প্যারামিটার লিস্ট এবং কলগুলিকে আরও সহজে মেইনটেন করা যায়।

সারাংশ

ECMAScript 2020 (ES11) জাভাস্ক্রিপ্টের ভাষাকে আরও শক্তিশালী এবং কার্যকর করে তোলে। BigInt এর মাধ্যমে বড় সংখ্যাগুলোকে হ্যান্ডেল করা সম্ভব হয়েছে, async/await এবং for-await-of এর মাধ্যমে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং উন্নত হয়েছে, এবং Object.fromEntries(), Array.prototype.flat(), ও Array.prototype.flatMap() এর মাধ্যমে অবজেক্ট ও অ্যারের ম্যানিপুলেশন সহজ হয়েছে। এছাড়াও, স্ট্রিং ম্যানিপুলেশন, মডিউল সিস্টেম, এবং গ্লোবাল অবজেক্ট অ্যাক্সেসের নতুন ফিচারগুলো ডেভেলপারদের কোড লেখাকে আরও সংক্ষিপ্ত, পরিষ্কার এবং কার্যকরী করে তোলে।

এই নতুন বৈশিষ্ট্যগুলো শেখা এবং ব্যবহার করা ডেভেলপারদের কোডের গুণগত মান এবং কার্যকারিতা বৃদ্ধি করতে সহায়ক, যা বড় এবং জটিল প্রজেক্টগুলির ক্ষেত্রে বিশেষভাবে উপকারী।


অতিরিক্ত টিপস

  • নতুন মেথড অনুশীলন করুন: BigInt, Array.prototype.flat(), Object.fromEntries(), এবং Promise.prototype.finally() মেথডগুলো ব্যবহার করে বিভিন্ন উদাহরণ তৈরি করুন।
  • অ্যাসিঙ্ক্রোনাস কোড লেখা অনুশীলন করুন: async এবং await ব্যবহার করে অ্যাসিঙ্ক্রোনাস ফাংশনগুলো লিখে দেখুন এবং তাদের কার্যকারিতা বুঝুন।
  • অবজেক্ট ম্যানিপুলেশন অনুশীলন করুন: Object.entries(), Object.values(), এবং Object.getOwnPropertyDescriptors() মেথডগুলো ব্যবহার করে অবজেক্ট ম্যানিপুলেশন অনুশীলন করুন।
  • স্ট্রিং ম্যানিপুলেশন ব্যবহার করুন: trimStart(), trimEnd(), এবং String.prototype.matchAll() মেথডগুলো স্ট্রিং ম্যানিপুলেশনে ব্যবহার করে বিভিন্ন উদাহরণ তৈরি করুন।
  • ডায়নামিক মডিউল লোডিং অনুশীলন করুন: import() ব্যবহার করে ডায়নামিক মডিউল লোডিং অনুশীলন করুন।
  • রেগুলার এক্সপ্রেশন শিখুন: রেগুলার এক্সপ্রেশন এর উন্নত বৈশিষ্ট্যগুলো ব্যবহার করে বিভিন্ন স্ট্রিং ম্যানিপুলেশন টাস্ক সমাধান করার চেষ্টা করুন।
  • ব্রাউজার সমর্থন পরীক্ষা করুন: আপনার টার্গেট ব্রাউজারগুলো ES11 এর নতুন ফিচারগুলো সমর্থন করে কিনা তা নিশ্চিত করুন।
  • ডকুমেন্টেশন পড়ুন: MDN Web Docs এর মতো রিসোর্স থেকে ES11 এর নতুন বৈশিষ্ট্যগুলোর বিস্তারিত জানুন এবং বিভিন্ন ব্যবহারিক উদাহরণ অনুসরণ করুন।

ES11 এর নতুন বৈশিষ্ট্যগুলোকে ভালোভাবে বুঝে এবং প্রয়োগ করে আপনি আপনার জাভাস্ক্রিপ্ট প্রোগ্রামিং দক্ষতাকে আরও উন্নত এবং কার্যকরী করতে পারবেন, যা আপনার কোডকে আরও নির্ভরযোগ্য এবং শক্তিশালী করে তুলবে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion